// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
1win platformasi – oyunlar, bonuslar ve emeliyyatlar haqqinda – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
1win platformasi – oyunlar, bonuslar ve emeliyyatlar haqqinda
1win – Azerbaycanda idman mərcləri və kazino platformasının ümumi baxışı
1win, Azərbaycan istifadəçilərinə idman mərcləri, canlı kazino, slot maşınları və digər onlayn oyun xidmətləri təqdim edən beynəlxalq platformadır. Burada istifadəçilər müxtəlif idman tədbirlərinə mərc edə, virtual oyunlarda iştirak edə və real vaxt rejimində dilerlərlə oynaya bilərlər. Platforma özünəməxsus interfeysi, mobil tətbiqi və müştəri dəstəyi ilə fərqlənir. Aşağıda 1win haqqında ən çox verilən sualların cavablarını tapa bilərsiniz.
1win platforması nədir və nə təklif edir?
1win əsasən onlayn mərc və qumar oyunları sahəsində fəaliyyət göstərir. Platforma yüzlərlə idman hadisəsi, yüksək keyfiyyətli canlı yayım xidməti, geniş slot və masaüstü oyunlar kolleksiyası ilə istifadəçilərin diqqətini cəlb edir. Həmçinin, virtual idman, TV oyunları və kart oyunları kimi bölmələr də mövcuddur. Bütün xidmətlər Azərbaycan dilində də təqdim olunur və ödənişlər manatla həyata keçirilə bilər.
1win-də qeydiyyat və hesaba daxil olma prosesi
Platformadan istifadə etmək üçün ilk addım qeydiyyatdan keçməkdir. Bu proses bir neçə dəqiqə çəkir və aşağıdakı məlumatları təqdim etməyi tələb edir:
Elektron poçt ünvanı və ya telefon nömrəsi
Şəxsiyyət vəsiqəsinin məlumatları (tam ad, doğum tarixi)
Yaşayış ünvanı
Valyuta seçimi (məsələn, AZN)
Qeydiyyatı tamamladıqdan sonra, istifadəçi adı və şifrə ilə istənilən vaxt hesabınıza daxil ola bilərsiniz. Unutduğunuz şifrəni bərpa etmək üçün “Şifrəni unutdum” funksiyasından istifadə etmək olar.
1win mobil tətbiqi – xüsusiyyətləri və quraşdırılması
Platformanın mobil tətbiqi iOS və Android əməliyyat sistemləri üçün mövcuddur. Tətbiq rəsmi saytdan endirilə bilər və quraşdırma adi prosesi izləyir. Mobil tətbiq bütün əsas funksiyaları – mərc etmə, depozit yatırma, bonusları aktivləşdirmə və dəstək xidməti ilə əlaqə saxlamağı təmin edir. Interfeys mobil cihazlar üçün optimallaşdırılıb və sürətli işləməsi ilə seçilir.
1win bonusları və promosyonları
Platforma yeni və mövcud müştərilər üçün müxtəlif bonus təklifləri hazırlayıb. Ən populyar bonus növləri aşağıdakılardır:
İlk depozit bonusu – hesabınıza ilk dəfə pul köçürdükdə əlavə məbləğ verilir
Mərc geri qaytarılması – müəyyən mərc edilmiş məbləğin faizi kimi
Pulsuz fırlanmalar – seçilmiş slot oyunlarında istifadə üçün
Ekspress bonusu – bir neçə hadisəyə eyni anda mərc edildikdə
Həftəlik cashback – itirilmiş məbləğin bir hissəsinin qaytarılması
Hər bir bonusun öz şərtləri və mərc tələbləri var, onları aktivləşdirməzdən əvvəl qaydaları oxumaq vacibdir.
Depozit və vəsait çıxarılması üsulları
1win Azərbaycan istifadəçiləri üçün bir sıra rahat ödəniş üsulları təklif edir. Depozit yatırmaq üçün ən çox istifadə olunan metodlar:
Ödəniş üsulu
Valyuta
Əməliyyat vaxtı
Minimum məbləğ
Bank kartı (Visa/Mastercard)
AZN
Dərhal
10 AZN
Elektron pul kisələri (Skrill, Neteller)
AZN, USD, EUR
Dərhal
5 AZN
Mobil ödənişlər
AZN
Dərhal
1 AZN
Kriptovalyuta (Bitcoin, Ethereum)
BTC, ETH
1-30 dəqiqə
0.0005 BTC
Bank köçürməsi
AZN, USD
1-3 iş günü
50 AZN
Vəsait çıxarılması üçün eyni üsullardan istifadə olunur, lakin əməliyyatın tamamlanma müddəti seçilmiş metoddan asılı olaraq bir neçə dəqiqədən bir neçə iş gününə qədər dəyişə bilər.
1win-də təhlükəsizlik və KYC siyasəti
Platforma lisenziyalı operator kimi fəaliyyət göstərir və istifadəçi məlumatlarının mühafizəsinə ciddi diqqət yetirir. Bütün məlumatlar şifrələnmiş keçidlər vasitəsilə ötürülür. KYC (Müştərini Tanı) proseduru qanuni tələbdir və aşağıdakı sənədlərin təqdimini nəzərdə tutur:
Şəxsiyyət vəsiqəsinin və ya pasportun skanı
Yaşayış ünvanını təsdiq edən sənəd (kommunal ödəniş qəbzi, bank hesabı)
Ödəniş vasitəsinin fotosu (əgər istifadə olunursa)
Yoxlama prosesi adətən 24-72 saat çəkir və ondan sonra bütün platforma funksiyalarından tam istifadə etmək mümkün olur.
Müştəri dəstəyi xidməti
1win istifadəçilərinə çoxdilli dəstək xidməti təqdim edir, o cümlədən Azərbaycan dilində. Kömək almaq üçün əsas üsullar:
Canlı söhbət – ən sürətli üsul, 7/24 mövcuddur
Elektron poçt – rəsmi ünvana müraciət
Telefon nömrəsi – beynəlxalq zəng üçün
FAQ bölməsi – tez-tez verilən sualların cavabları
Dəstək komandası hesab, ödəniş, texniki və qaydalarla bağlı problemlərə kömək edir. Cavab müddəti seçilmiş üsuldan asılı olaraq bir neçə dəqiqədən bir neçə saatadək dəyişir.
Platformanın digər vacib xüsusiyyətləri
1win təkcə mərc və kazino deyil, həm də sosial interaksiya üçün imkanlar yaradır. Oyunçular arasında turnirlər, lotereyalar və xüsusi tədbirlər təşkil olunur. Həmçinin, mərc tarixçəsi, cari balans və aktiv bonuslar haqqında ətraflı məlumatlar şəxsi kabinetdə mövcuddur. Platforma daimi yenilənir və istifadəçi rəyləri nəzərə alınaraq yeni funksiyalar əlavə olunur.
Ümumilikdə, 1win Azərbaycan bazarında geniş xidmət spektrini, yerli valyutanı dəstəkləməyi və istifadəçi məmnuniyyətinə yönəlmiş yanaşması ilə fərqlənən platformadır. Hər bir istifadəçi öz ehtiyaclarına uyğun olaraq müxtəlif oyun və mərc variantlarından seçim edə bilər.